import { QueryPage } from "@/api/common/type";

/**
 * 物料核价实体
 */
export interface MaterialPricing {
  id?: number;
  materialId: number;           // 物料ID，关联物料档案表
  projectId: number;            // 项目ID，关联项目档案表
  materialPrice: number;        // 物料价格
  number?: number;              // 数量
  unit?: string;                // 单位
  type?: string;                // 类型
  
  // 冗余字段，便于显示
  projectName?: string;         // 项目名称
  projectCode?: string;         // 项目编码
  materialCode?: string;        // 物料编码
  materialName?: string;        // 物料名称
  materialModel?: string;       // 物料型号
  materialBrand?: string;       // 物料品牌
  materialCategoryName?: string; // 物料分类名称
  materialUnitName?: string;    // 物料单位名称
  materialPurchasePrice?: number; // 物料采购价格
  
  activate?: number;            // 激活状态：0-失效，1-生效
  createTime?: string;          // 创建时间
  updateTime?: string;          // 修改时间
  createId?: number;            // 创建人ID
  createName?: string;          // 创建人姓名
  updateId?: number;            // 更新人ID
  updateName?: string;          // 更新人姓名
}

/**
 * 物料核价查询参数
 */
export interface MaterialPricingListParam extends QueryPage {
  projectName?: string;         // 项目名称
  materialName?: string;        // 物料名称
  materialModel?: string;       // 物料型号
  materialCategoryName?: string; // 物料分类名称
  type?: string;                // 类型
  activate?: number;            // 激活状态
}

/**
 * 物料核价创建参数
 */
export interface MaterialPricingCreateParam {
  materialId: number;           // 物料ID
  projectId: number;            // 项目ID
  materialPrice: number;        // 物料价格
  materialPurchasePrice?: number; // 物料采购价格
  number?: number;              // 数量
  unit?: string;                // 单位
  type?: string;                // 类型
  activate?: number;            // 激活状态
}

/**
 * 物料核价更新参数
 */
export interface MaterialPricingUpdateParam {
  id: number;                   // 主键ID
  materialId: number;           // 物料ID
  projectId: number;            // 项目ID
  materialPrice: number;        // 物料价格
  materialPurchasePrice?: number; // 物料采购价格
  number?: number;              // 数量
  unit?: string;                // 单位
  type?: string;                // 类型
  activate?: number;            // 激活状态
}

/**
 * 状态更新参数
 */
export interface MaterialPricingUpdateStatusParam {
  id: number;                   // 主键ID
  activate: number;             // 激活状态：0-失效，1-生效
}

/**
 * 批量更新状态参数
 */
export interface MaterialPricingBatchUpdateStatusParam {
  ids: number[];                // 主键ID列表
  activate: number;             // 激活状态：0-失效，1-生效
}

/**
 * 自定义导出请求
 */
export interface ExportRequest {
  fields: string[];             // 选中的字段列表
  searchParam: MaterialPricingListParam; // 查询参数
}

/**
 * 导出字段信息
 */
export interface ExportFieldInfo {
  fieldName: string;    // 字段名称
  displayName: string;  // 显示名称
}

/**
 * 批量复制参数
 */
export interface MaterialPricingBatchCopyParam {
  sourceIds: number[];     // 源物料核价ID列表
  targetProjectId: number; // 目标项目ID
} 